#include <head.h>

int main(int argc, char const *argv[])
{
	// 文件描述符
	int fifo_fd_1 = open("fifo_1", O_RDONLY);
	if (fifo_fd_1 == -1)
	{
		ERRLOG("文件打开失败");
		return 0;
	}
	printf("文件1启动成功\n");
	// 文件描述符
	int fifo_fd_2 = open("fifo_2", O_RDONLY);
	if (fifo_fd_2 == -1)
	{
		ERRLOG("文件打开失败");
		return 0;
	}
	printf("文件2启动成功\n");
	// 文件描述符
	int fifo_fd_3 = open("fifo_3", O_RDONLY);
	if (fifo_fd_3 == -1)
	{
		ERRLOG("文件打开失败");
		return 0;
	}
	printf("文件3启动成功\n");

	// 设定非阻塞模式
	int flag;

	// 获取状态
	flag = fcntl(fifo_fd_1, F_GETFL);
	// 对标志位写入非阻塞
	flag |= O_NONBLOCK;
	// 对文件描述符写入非阻塞
	fcntl(fifo_fd_1, F_SETFL, flag);

	// 获取状态
	flag = fcntl(fifo_fd_2, F_GETFL);
	// 对标志位写入非阻塞
	flag |= O_NONBLOCK;
	// 对文件描述符写入非阻塞
	fcntl(fifo_fd_2, F_SETFL, flag);

	// 获取状态
	flag = fcntl(fifo_fd_3, F_GETFL);
	// 对标志位写入非阻塞
	flag |= O_NONBLOCK;
	// 对文件描述符写入非阻塞
	fcntl(fifo_fd_3, F_SETFL, flag);

	char buf[1024];

	int byte = 0;

	int fifo_fds[3] = {fifo_fd_1, fifo_fd_2, fifo_fd_3};

	while (1)
	{
		memset(buf, 0, sizeof(buf));
		for (int i = 0; i < 3; i++)
		{
			// 读取
			byte = read(fifo_fds[i], buf, sizeof(buf));
			if (byte > 0)
			{
				printf("fifo_%d = %s\n", i + 1, buf);
			}
		}
	}

	close(fifo_fd_1);
	close(fifo_fd_2);
	close(fifo_fd_3);
	return 0;
}